diff --git a/sklearn/utils/metaestimators.py b/sklearn/utils/metaestimators.py
index 541ffc583..140c01c37 100644
--- a/sklearn/utils/metaestimators.py
+++ b/sklearn/utils/metaestimators.py
@@ -41,7 +41,11 @@ class _BaseComposition(six.with_metaclass(ABCMeta, BaseEstimator)):
         if attr in params:
             setattr(self, attr, params.pop(attr))
         # 2. Step replacement
-        names, _ = zip(*getattr(self, attr))
+        estimators = getattr(self, attr)
+        if estimators:
+            names, _ = zip(*estimators)
+        else:
+            names = []
         for name in list(six.iterkeys(params)):
             if '__' not in name and name in names:
                 self._replace_estimator(attr, name, params.pop(name))
